using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 创建一个菜单项，用于在Unity编辑器中创建这个效果的实例
[CreateAssetMenu(fileName = "FreezeEnemies effect", menuName = "Data/Item effect/Freeze effect")]
public class FreezeEnemies_Effect : ItemEffect
{
    // 序列化字段，使其在Unity编辑器中可见
    [SerializeField] private float duration;

    // 重写基类的ExecuteEffect方法
    public override void ExecuteEffect(Transform _transform)
    {
        // 获取玩家的属性
        PlayerStats playerStats = PlayerManager.instance.player.GetComponent<PlayerStats>();
        
        // 如果玩家的当前生命值大于最大生命值的10%，则返回
        if (playerStats.currentHealth > playerStats.GetMaxHealthValue() * .1f) return;
        
        // 如果不能使用护甲，则返回
        if (!Inventory.instance.CanUseArmor()) return;
        
        // 获取指定位置半径为2的圆内的所有碰撞体
        Collider2D[] colliders = Physics2D.OverlapCircleAll(_transform.position, 2);
        
        // 遍历所有碰撞体
        foreach (var hit in colliders)
        {
            // 如果碰撞体是敌人，则冻结敌人指定时间
            hit.GetComponent<Enemy>()?.FreezeTimeFor(duration);
        }
    }
}